Complex Data Binding এবং Nested Object Binding হল MVVM (Model-View-ViewModel) প্যাটার্নে View এবং ViewModel এর মধ্যে আরও জটিল এবং গহিনভাবে ডেটা বাইন্ডিং করার উপায়। এ দুটি কৌশল ব্যবহার করে আপনি আরও উন্নত এবং ডাইনামিক অ্যাপ্লিকেশন তৈরি করতে পারেন যেখানে ডেটার ভিতরের স্তরের তথ্যও View-এ সঠিকভাবে উপস্থাপন করা হয়।
Complex Data Binding হল এমন একটি প্রক্রিয়া, যেখানে ViewModel থেকে View-এ ডেটার বিভিন্ন স্তরের বা কমপ্লেক্স অবজেক্টের মান প্রদর্শন করা হয়। এর মাধ্যমে আপনি একাধিক প্রপার্টি বা উপাদান একটি নির্দিষ্ট UI উপাদানে বাইন্ড করতে পারেন। এর মধ্যে একাধিক উপাদান বা Collection থেকে ডেটা প্রদর্শন করা হতে পারে, যা UI তে সঠিকভাবে রেন্ডার হয়।
ধরা যাক, আমাদের একটি Product
Model আছে এবং সেই সাথে একটি Category
নামে আরও একটি Model রয়েছে, যা প্রতিটি প্রোডাক্টের ক্যাটাগরি দেখাবে।
Model:
public class Category
{
public string CategoryName { get; set; }
}
public class Product
{
public string ProductName { get; set; }
public decimal Price { get; set; }
public Category Category { get; set; }
}
এখন, যদি আমাদের ViewModel এ Product এর ডেটা থাকে এবং আমরা View-এ সেই ডেটার মান দেখাতে চাই, তাহলে আমরা Complex Data Binding ব্যবহার করব।
ViewModel:
public class ProductViewModel
{
public Product Product { get; set; }
public ProductViewModel()
{
Product = new Product
{
ProductName = "Laptop",
Price = 999.99m,
Category = new Category { CategoryName = "Electronics" }
};
}
}
View (XAML):
<TextBlock Text="{Binding Product.ProductName}" />
<TextBlock Text="{Binding Product.Price}" />
<TextBlock Text="{Binding Product.Category.CategoryName}" />
এখানে, TextBlock গুলি Product অবজেক্টের ভেতরে থাকা বিভিন্ন প্রপার্টি (যেমন ProductName, Price, এবং CategoryName) প্রদর্শন করছে। ViewModel থেকে View-এ কমপ্লেক্স ডেটা বাইন্ড করা হচ্ছে।
Nested Object Binding হল এমন একটি প্রক্রিয়া, যেখানে একটি Object অন্য একটি Object এর মধ্যে থাকে এবং আপনি সেই Nested Object এর প্রপার্টি বা ফিল্ডকে বাইন্ড করেন। এই ধরনের বাইন্ডিং ব্যবহৃত হয় যখন ViewModel এর মধ্যে Object এর অভ্যন্তরীণ স্তরের ডেটা থেকে View-এ তথ্য প্রদর্শন করতে হয়।
ধরা যাক, আমাদের Customer এবং Address নামের দুটি Model আছে, এবং Customer মডেলটি Address নামক একটি Nested Object ধারণ করে।
Model:
public class Address
{
public string Street { get; set; }
public string City { get; set; }
}
public class Customer
{
public string Name { get; set; }
public Address CustomerAddress { get; set; }
}
ViewModel:
public class CustomerViewModel
{
public Customer Customer { get; set; }
public CustomerViewModel()
{
Customer = new Customer
{
Name = "John Doe",
CustomerAddress = new Address { Street = "123 Main St", City = "New York" }
};
}
}
এখন, যদি আমরা Customer এর নাম এবং CustomerAddress এর ভেতরে থাকা স্ট্রিট এবং সিটি প্রদর্শন করতে চাই, তাহলে আমরা Nested Object Binding ব্যবহার করতে পারি।
View (XAML):
<TextBlock Text="{Binding Customer.Name}" />
<TextBlock Text="{Binding Customer.CustomerAddress.Street}" />
<TextBlock Text="{Binding Customer.CustomerAddress.City}" />
এখানে, Customer এর Name এবং CustomerAddress এর Street এবং City বাইন্ড করা হচ্ছে। এতে ViewModel এর Customer অবজেক্ট এবং এর ভেতরে থাকা Address অবজেক্টের প্রপার্টি দেখানো হচ্ছে।
common.read_more